package com.uacp.sgb.datos.dominio.persistencia.dao;

import java.util.List;

import javax.persistence.EntityManager;
import javax.persistence.EntityTransaction;
import javax.persistence.NoResultException;
import javax.persistence.Query;

import com.uacp.sgb.datos.dominio.entidades.Bien;
import com.uacp.sgb.datos.dominio.entidades.Dependencia;
import com.uacp.sgb.datos.dominio.entidades.Equipo;
import com.uacp.sgb.datos.dominio.entidades.Mueble;
import com.uacp.sgb.datos.dominio.entidades.Trabajador;
import com.uacp.sgb.datos.dominio.persistencia.util.UtilManager;

public class EquipoDao 
{
	private EquipoDao()
	{
		
	}
	public static List<Equipo> getEquiposDependencia(Dependencia dependencia)
	{
		EntityManager em = UtilManager.getEntityManager();
		
		Query query = em.createNamedQuery("Equipo.listarEquiposAlta");
		query.setParameter("dependencia", dependencia.getNombre());
		List<Equipo> equipos = query.getResultList();
		em.close();
		
		return equipos;
	}
	
	public static List<Equipo> listarEquiposTrabajador(Trabajador trabajador)
	{
		EntityManager em = UtilManager.getEntityManager();
		
		Query query = em.createNamedQuery("Equipo.listarEquiposTrabajador");
		query.setParameter("nroDoc", trabajador.getNroDoc());
		
		List<Equipo> equipos = query.getResultList();
		em.close();
		
		return equipos;
	}
	
	public static void guardar(Equipo equipo) 
	{		
		EntityManager em = UtilManager.getEntityManager();
		EntityTransaction et = em.getTransaction();
		
		et.begin();
		em.persist(equipo);
		et.commit();
		em.close();
	}

	public static Equipo buscarPorDatos(Equipo equipo) 
	{
		Equipo equipoEncontrado = null;
		
		EntityManager em = UtilManager.getEntityManager();
		
		Query query = em.createNamedQuery("Equipo.buscarPorDatos");
		query.setParameter("descripcion", equipo.getDescripcion());
		query.setParameter("marca", equipo.getMarca());
		query.setParameter("modelo", equipo.getModelo());
		query.setParameter("serie", equipo.getSerie());
		
		try
		{
			equipoEncontrado = (Equipo)query.getSingleResult();
		}
		catch(NoResultException nre)
		{
			em.close();
			return equipoEncontrado;
		}
		
		em.close();
		
		return equipoEncontrado;
	}
}
